# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This class is auto generated by the swagger code generator program.
# https://github.com/swagger-api/swagger-codegen.git
# Do not edit the class manually.

defmodule GoogleApi.Spectrum.V1explorer.Model.DeviceDescriptor do
  @moduledoc """
  The device descriptor contains parameters that identify the specific device, such as its manufacturer serial number, regulatory-specific identifier (e.g., FCC ID), and any other device characteristics required by regulatory domains.

  ## Attributes

  - etsiEnDeviceCategory (String.t): Specifies the ETSI white space device category. Valid values are the strings master and slave. This field is case-insensitive. Consult the ETSI documentation for details about the device types. Defaults to: `null`.
  - etsiEnDeviceEmissionsClass (String.t): Specifies the ETSI white space device emissions class. The values are represented by numeric strings, such as 1, 2, etc. Consult the ETSI documentation for details about the device types. Defaults to: `null`.
  - etsiEnDeviceType (String.t): Specifies the ETSI white space device type. Valid values are single-letter strings, such as A, B, etc. Consult the ETSI documentation for details about the device types. Defaults to: `null`.
  - etsiEnTechnologyId (String.t): Specifies the ETSI white space device technology identifier. The string value must not exceed 64 characters in length. Consult the ETSI documentation for details about the device types. Defaults to: `null`.
  - fccId (String.t): Specifies the device&#39;s FCC certification identifier. The value is an identifier string whose length should not exceed 32 characters. Note that, in practice, a valid FCC ID may be limited to 19 characters. Defaults to: `null`.
  - fccTvbdDeviceType (String.t): Specifies the TV Band White Space device type, as defined by the FCC. Valid values are FIXED, MODE_1, MODE_2. Defaults to: `null`.
  - manufacturerId (String.t): The manufacturer&#39;s ID may be required by the regulatory domain. This should represent the name of the device manufacturer, should be consistent across all devices from the same manufacturer, and should be distinct from that of other manufacturers. The string value must not exceed 64 characters in length. Defaults to: `null`.
  - modelId (String.t): The device&#39;s model ID may be required by the regulatory domain. The string value must not exceed 64 characters in length. Defaults to: `null`.
  - rulesetIds ([String.t]): The list of identifiers for rulesets supported by the device. A database may require that the device provide this list before servicing the device requests. If the database does not support any of the rulesets specified in the list, the database may refuse to service the device requests. If present, the list must contain at least one entry.  For information about the valid requests, see section 9.2 of the PAWS specification. Currently, FccTvBandWhiteSpace-2010 is the only supported ruleset. Defaults to: `null`.
  - serialNumber (String.t): The manufacturer&#39;s device serial number; required by the applicable regulatory domain. The length of the value must not exceed 64 characters. Defaults to: `null`.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :etsiEnDeviceCategory => any(),
          :etsiEnDeviceEmissionsClass => any(),
          :etsiEnDeviceType => any(),
          :etsiEnTechnologyId => any(),
          :fccId => any(),
          :fccTvbdDeviceType => any(),
          :manufacturerId => any(),
          :modelId => any(),
          :rulesetIds => list(any()),
          :serialNumber => any()
        }

  field(:etsiEnDeviceCategory)
  field(:etsiEnDeviceEmissionsClass)
  field(:etsiEnDeviceType)
  field(:etsiEnTechnologyId)
  field(:fccId)
  field(:fccTvbdDeviceType)
  field(:manufacturerId)
  field(:modelId)
  field(:rulesetIds, type: :list)
  field(:serialNumber)
end

defimpl Poison.Decoder, for: GoogleApi.Spectrum.V1explorer.Model.DeviceDescriptor do
  def decode(value, options) do
    GoogleApi.Spectrum.V1explorer.Model.DeviceDescriptor.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Spectrum.V1explorer.Model.DeviceDescriptor do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
